package me.raih.utils;

import me.raih.pojo.Menu;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Raih
 * @version 1.8
 * @Time 2020/9/9  17:41
 *
 * 菜单工具
 */
public class MenuUtil {

    public static List<Object> getMenuList(List<Menu> menuList) {
        //设置存放各种值的集合
        List<Object> objectList = new ArrayList<>();
        //设置内部找单菜单的map
        Map<String, Map<String, Menu>> inMap = new HashMap<>();
        //定义一个需要的玩意
        Map<String, Menu> menuMap = new HashMap<>();
        //为首菜单的key准备
        int temp = 0;
        //再把小菜单取出来试试
        for (int i = 0; i < menuList.size(); i++) {
            //循环一次把首菜单给拿出来
            if (menuList.get(i).getPid() == 0) {
                //如果说，是首菜单的标志
                menuMap.put(String.valueOf(temp++), menuList.get(i));
            }
        }
        objectList.add(menuMap);
        //重置  1
        //通过已经拿出的首菜单验证或装载子菜单
        for (int i = 0; i < menuMap.size(); i++) {
            //List<Menu> menus = new ArrayList<>();
            temp = 0;
            Map<String, Menu> menus = new HashMap<>();
            for (Menu menu : menuList) {
                //只需要判断非首菜单即可
                if(menu.getPid() != 0){
                    //当不是主菜单的时候再去进行
                    //如果当前的menu的pid跟 主菜单的 id相等，那么就是它的子菜单
                    if (menu.getPid() == menuMap.get(String.valueOf(i)).getId()) {
                        //将这个子菜单放到一个集合之中，方便管理
                        menus.put(String.valueOf(temp++), menu);
                    }
                }
            }
            //将拿到的子菜单装到  奇怪的集合里面来
            objectList.add(menus);
        }
        return objectList;
    }
}
